pub trait TimeProvider {
    fn current_time(&self) -> i64;
    fn ntp_time(&self) -> Option<i64>;
}

#[derive(Debug)]
pub struct SystemTimeProvider;

impl TimeProvider for SystemTimeProvider {
    fn current_time(&self) -> i64 {
        let t = crate::get_current_sys_time_seconds();
        i64::try_from(t).unwrap()
    }

    fn ntp_time(&self) -> Option<i64> {
        todo!()
    }
}
